package com.dragon.manage.service.impl;

import java.util.Date;

import com.dragon.manage.bean.ManageUser;
import com.dragon.manage.dao.IManageUserDAO;
import com.dragon.manage.service.IManageService;
import com.dragon.manage.util.RechargeUtil;
import com.dragon.manage.util.StaticData;

public class ManageServiceImpl implements IManageService{
	
	/**
	 * 管理用户
	 */
	private IManageUserDAO manageUserDao;
	
	@Override
	public ManageUser manageUserLogin(String userName, String pwd,String loginIp) throws Exception {
		String encryptPwd = RechargeUtil.encoderByMd5(pwd);
		ManageUser user = manageUserDao.getManageUserByName(userName);
		if(user.getPwd().equals(encryptPwd)){
			user.setLoginIp(loginIp);
			user.setLoginDate(new Date());
			updateManageUser(user);
			return user;
		}
		return null;
	}
	
	@Override
	public ManageUser getManageUser(int id) throws Exception {
//		/*
//		 *1从缓存中获取用户
//		 *2缓存中没有从数据库获取用户 
//		 */
//		ManageUser manageUser = (ManageUser) RedisPoolMgr.get(getManageUserKey(id), ManageUser.class);
//		if(manageUser==null){
		ManageUser	manageUser = manageUserDao.getManageUserByID(id);
//			RedisPoolMgr.set(getManageUserKey(id), manageUser);
//		}
		return manageUser;
	}
	
	/**
	 * 更新系统用户数据
	 * @param manageUser
	 * @throws Exception
	 */
	private void updateManageUser(ManageUser manageUser)throws Exception {
		manageUserDao.updateManageUser(manageUser);
	}
	
	public IManageUserDAO getManageUserDao() {
		return manageUserDao;
	}

	public void setManageUserDao(IManageUserDAO manageUserDao) {
		this.manageUserDao = manageUserDao;
	}

	@Override
	public int updateManageUserPwd(int id,String oldPwd,String newPwd) throws Exception {
		int code =  StaticData.codeType.ok.getType();
		//编码老的密码
		String encryptPwd = RechargeUtil.encoderByMd5(oldPwd);
		//获取用户
		ManageUser manageUser = getManageUser(id);
		//验证老的密码是否正确
		if(manageUser!=null&&manageUser.getPwd().equals(encryptPwd)){
			//更新密码
			manageUser.setPwd(RechargeUtil.encoderByMd5(newPwd));
			updateManageUser(manageUser);
		}else{
			code = StaticData.codeType.old_pwd_error.getType();
		}
		
		return code;
	}

}
